🔁 III. 알고리즘과 프로그래밍 > 05 중첩 제어 구조

반복문과 중첩 구조

같은 일을 100번 시키려면? 반복문이 답!
반복 안에 반복, 반복 안에 선택 — 중첩 제어 구조의 마법을 배워 봅시다. 🌀

반복 구조
중첩
패턴 만들기

학습 목표

[9정03-05] 반복 구조와 중첩 제어 구조를 활용하여 문제를 해결하는 프로그램을 작성한다

  • 반복 구조(반복문)가 왜 필요한지 알고, 횟수 반복·조건 반복을 구분할 수 있다.
  • 중첩 제어 구조(반복 안의 반복, 반복 안의 선택)의 의미를 이해한다.
  • 중첩 반복으로 격자·패턴을 만들고 실행 횟수를 계산할 수 있다.

생각 열기 🤔

칠판에 별(★)을 100개 그려야 해요. "별을 그린다"를 100줄이나 써야 할까요? 😵 너무 비효율적이죠! 이럴 때 "별을 그린다를 100번 반복" 한 줄이면 끝!

게다가 10줄 × 10칸짜리 별 격자를 만들려면? "한 줄(10개)을 그린다"를 10번 반복 — 이렇게 반복 안에 반복을 넣는 것이 바로 중첩 제어 구조예요!

💡 반복은 "게으른 프로그래머의 지혜" — 같은 일은 컴퓨터에게 반복시키자!

1. 반복 구조 (반복문)

같은 일을 여러 번, 단 한 줄로

반복 구조같은 명령을 여러 번 실행하게 해 주는 구조예요. 크게 횟수가 정해진 반복(예: 10번 반복)과 조건이 만족될 때까지 반복(예: 벽에 닿을 때까지)으로 나뉘어요. 스크래치에는 아래 세 가지 반복 블록이 있답니다.

음료를 채우는 공장 자동 병입 생산 라인

🏭 공장은 반복으로 돌아가요

공장의 생산 라인은 "병을 놓고 → 음료를 채우고 → 뚜껑을 닫는다"는 똑같은 동작을 하루에 수만 번 반복해요. 사람이라면 지치겠지만, 같은 일을 정확히 되풀이하는 건 컴퓨터(기계)가 가장 잘하는 일이죠. 그게 바로 반복 구조예요.

© Olivier Lemoine · CC BY-SA 4.0 · Wikimedia Commons

① 무한 반복

멈추지 않고 계속 반복! 게임의 기본 동작에 자주 써요.

무한 반복하기

② N번 반복

정해진 횟수만큼 반복! 별 10개 그리기처럼요.

10번 반복하기

③ 조건 반복

조건이 만족될 때까지 반복! 벽에 닿을 때까지 이동.

< 벽에 닿음 > 까지 반복

👣 인터랙티브 · 반복 추적기 (N번 반복)

"★ 그리기"를 N번 반복하면 어떻게 될까요? 한 단계씩 또는 자동으로 실행하며 반복 횟수 i가 늘어나는 걸 지켜보세요!

5번 반복
★ 그리기
반복 횟수 N 5

현재 반복 횟수

0 / 5

버튼을 눌러 ★을 그려 보세요

아직 시작하지 않았어요

💡 i가 N에 도달하면 반복이 끝나요. N을 바꾸면 그리는 별 개수도 달라지죠. "한 번 반복"을 N번 누른 것과 "자동 실행"이 똑같다는 걸 확인해 보세요!

2. 중첩 제어 구조

반복 안의 반복, 반복 안의 선택

중첩(nested)이란 제어 구조 안에 또 다른 제어 구조를 넣는 거예요. 가장 대표적인 건 반복 안에 반복! 예를 들어 "가로 한 줄(★ 5개)을 그린다"3번 반복하면 3줄 × 5칸 = 15개의 별 격자가 완성돼요.

인형 속에 더 작은 인형이 들어 있는 러시아 마트료시카 인형

🪆 중첩이 뭐냐면, 이 인형처럼!

러시아 인형 마트료시카는 인형을 열면 그 안에 더 작은 인형이, 또 그 안에 더 작은 인형이 들어 있어요. 중첩 제어 구조도 똑같아요 — 반복 안에 또 반복이 쏙 들어가 있는 모습이 바로 중첩이랍니다.

© Fanghong/Gnomz007 · CC BY-SA 3.0 · Wikimedia Commons

💻 의사코드 — 별 격자

반복 3번 (바깥 = 줄)
반복 5번 (안쪽 = 칸)
★ 그리기
줄 바꾸기

↑ 안쪽 반복이 한 줄을 그리고, 바깥 반복이 그 줄을 여러 번 만들어요.

🧩 스크래치 블록

3번 반복하기
5번 반복하기
★ 도장 찍기
다음 줄로 이동

블록이 안으로 들어갈수록 더 깊은 중첩이에요!

실행 횟수 = 바깥 횟수 × 안쪽 횟수! 바깥이 3번, 안쪽이 5번이면 ★ 그리기는 모두 3 × 5 = 15번 실행돼요.

🟧 인터랙티브 · 중첩 반복 패턴 생성기

줄 수(바깥 반복)와 칸 수(안쪽 반복)를 바꿔 보세요. 격자 패턴이 실시간으로 그려지고, 총 실행 횟수 = 줄 × 칸이 계산돼요!

줄 수 (바깥) 3
칸 수 (안쪽) 5
그림:

바깥 반복(줄)

3

안쪽 반복(칸)

5

총 실행 횟수

15

💡 칸 수를 1로 두고 줄 수만 늘리면 세로 한 줄, 줄 수를 1로 두고 칸 수만 늘리면 가로 한 줄! 둘 다 늘리면 격자가 돼요. 곱셈으로 횟수가 빠르게 커지는 걸 느껴 보세요.

3. 조건 반복 (~할 때까지)

몇 번인지 몰라도, 조건으로 멈춘다

반복 횟수를 미리 알 수 없을 때도 있어요. "벽에 닿을 때까지 걷기"는 몇 걸음일지 모르죠. 이럴 때 조건 반복을 써요 — 조건이 만족될 때까지 계속 반복하다가, 조건이 참이 되는 순간 딱 멈춰요! 반복할 때마다 조건을 다시 검사한답니다.

🚶 인터랙티브 · 조건 반복 시뮬레이터

"벽에 닿을 때까지 40만큼 이동" — 한 걸음씩 옮기며 매번 벽에 닿았는지(x >= 200) 조건을 검사해요. 참이 되면 멈춰요!

반복: < 벽에 닿음 (x >= 200) > 까지
x를 40만큼 늘리기 (이동)
🚶 🧱

현재 위치 x

0

반복 횟수

0

벽에 닿음? (x>=200)

거짓

출발 준비 완료! 한 걸음씩 옮겨 보세요.

💡 조건을 먼저 검사하고, 거짓이면 한 번 더 반복해요. 벽까지 거리(200)를 한 걸음(40)으로 나누면 딱 5걸음! 조건 반복은 이렇게 스스로 멈출 시점을 찾아요.

참고 — 중첩 반복의 힘과 주의점 (성취기준 밖 심화)

✖️ 횟수는 '곱'으로 늘어요

3번 안에 5번이면 3×5=15번. 100번 안에 100번이면 1만 번! 중첩이 깊을수록 폭발적으로 늘어나요.

♾️ 무한 루프 주의

멈출 조건이 없거나 잘못되면 영원히 반복해요. 반복문엔 끝나는 조건이 꼭 있어야 해요!

🔁 for vs while

for는 횟수가 정해졌을 때, while은 조건이 만족될 때까지 반복할 때 주로 써요.

핵심 정리

🔁

반복 구조

같은 명령을 여러 번 실행. 횟수 반복(N번 반복)과 조건 반복(~까지 반복)으로 나뉜다.

🌀

중첩 제어 구조

제어 구조 안에 또 다른 제어 구조. 반복 안의 반복으로 격자·패턴을 만든다.

✖️

실행 횟수

중첩 반복의 안쪽 실행 횟수 = 바깥 횟수 × 안쪽 횟수. 곱셈으로 빠르게 커진다!

확인 퀴즈

5문제로 반복과 중첩을 점검해 봐요!

1

같은 명령을 여러 번 실행하게 해 주는 제어 구조는 무엇인가요?

순차 구조
선택 구조
반복 구조
입력 구조
2

5번 반복하기 안에 "★ 그리기" 명령 하나가 있어요. ★은 몇 개 그려질까요?

1개
0개
10개
5개
3

바깥 반복 4번 안에 안쪽 반복 3번이 있고, 안쪽에 "도장 찍기"가 있어요. 도장은 몇 번 찍힐까요?

7번 (4 + 3)
12번 (4 × 3)
4번
3번
4

반복 횟수를 미리 모를 때, "벽에 닿을 때까지"처럼 조건으로 멈추는 반복을 무엇이라 하나요?

조건 반복 (~까지 반복)
횟수 반복 (N번 반복)
순차 실행
단 한 번 실행
5

중첩 제어 구조를 가장 잘 설명한 것은?

명령을 위에서 아래로 한 번만 실행하는 것
제어 구조 안에 또 다른 제어 구조를 넣는 것
변수에 값을 저장하는 것
두 값을 비교하는 것